﻿//using System;
//using System.Collections.Generic;
//using System.Text;
//using System.Threading;

//namespace 多线程
//{
//    class Q
//    { //仓库
//        int n; //仓库中的产品

//        // Start with consumer semaphore unavailable. 
//        static Semaphore semCon = new Semaphore(0);
//        static Semaphore semProd = new Semaphore(1);

//        void get()
//        {
//            try
//            {
//                semCon.acquire();
//            }
//            catch (InterruptedException e)
//            {
//                TestFunc("InterruptedException caught");
//            }

//            TestFunc("Got: " + n.ToString());
//            semProd.release();
//        }

//        void put(int n)
//        {
//            try
//            {
//                semProd.acquire();
//            }
//            catch (InterruptedException e)
//            {
//                TestFunc("InterruptedException caught");
//            }

//            this.n = n;
//            TestFunc("Put: " + n.ToString());
//            semCon.release();
//        }
//    }

//    class Producer : Runnable
//    { //生产者
//        Q q;

//        Producer(Q q)
//        {
//            this.q = q;
//            new Thread(this, "Producer").start();
//        }

//        public void run()
//        {
//            for (int i = 0; i < 20; i++) q.put(i);
//        }
//    }

//    class Consumer : Runnable
//    { //消费者
//        Q q;

//        Consumer(Q q)
//        {
//            this.q = q;
//            new Thread(this, "Consumer").start();
//        }

//        public void run()
//        {
//            for (int i = 0; i < 20; i++) q.get();
//        }
//    }

//    class ProdCon
//    { //测试类
//        public static void main(String[] args)
//        {

//        }
//    }
//}
